AWS Managed Microsoft AD 環境で Azure AD Connect Cloud Sync を使おうとして失敗した話

AWS Managed Microsoft AD 環境で Azure AD Connect Cloud Sync を使おうとして失敗した話

やっぱり今回も駄目だったよ
Clock Icon2022.01.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

前の記事でAWS Managed Microsoft ADとAzure AD Connect v2を使ってパスワードハッシュ同期によるID同期を試みて見事に失敗したわけですが、失敗ついでにAzure AD Connect Cloud Syncも試してみることにしました。

https://dev.classmethod.jp/articles/faided-to-using-aws-managed-microsoft-ad-with-azure-adconnect-v2-hash-sync/

TL;DR

本日(2022年1月22日)時点でAzure AD Connect Cloud SyncのセットアップにはDomain AdminsまたはEnterprise Adminsに所属するユーザーの認証情報が必要であり、AWS Managed Microsoft AD環境ではインストール時に権限チェックで失敗します。
何らかの抜け道がないか調べてみたもののダメでした。

現状AWSでAzure AD Connect Cloud Syncを使いたい場合はEC2でActive Direcotry環境を構築する必要があります。

失敗してみた

Azure AD Connect Cloud Syncのインストールに必要な事前要求は以下のドキュメントに記載されています。

こちらに思いっきり

  • Domain Administrator or Enterprise Administrator credentials to create the Azure AD Connect Cloud Sync gMSA (group Managed Service Account) to run the agent service.

Domain AdminsまたはEnterprise Admins権限が必要である旨が記載されています。

マネージドサービスであるAWS Managed Microsoft ADでは利用者にはどちらの権限も与えらえていないため普通に考えればこの時点で利用不可なのは明らかです。
とはいえAWS Managed Microsoft ADの管理者であるAdminユーザーもそれなりの権限を持っているので「実際に試してみれば存外うまくいくかも?」と一縷の望みをかけてみました。

検証環境

これまでの検証で使っていたAWS Managed Microsoft AD(shibata.localドメイン)環境に日本語版Windows Server 2019 EC2を新たに用意しました。
(サーバー名はcloud-sync-sv0としドメイン参加済み)

Azure AD環境はこれまで使っていたexample.shibata.techテナントを初期化して再利用しています。

グループ管理サービスアカウント(gMSA)の作成

Azure AD Connect Cloud Syncではエージェントプログラムをグループ管理サービスアカウント(gMSA)で動作させます。
インストール時に新規にアカウントを作成することもできるのですが、今回は事前にAADCloudSyncという名前のアカウントを作っておきました。

# gMSAを作成
New-ADServiceAccount -Name 'AADCloudSync' -DNSHostName 'cloud-sync-sv01'

AWS Managed Microsoft AD環境でのgMSAの作成方法についてはこちらの記事をご覧ください。

https://dev.classmethod.jp/articles/how-to-create-gmsa-on-microsoft-ad/

(失敗) Azure AD Connect Cloud Syncのインストール

Azure AD Connect Cloud SyncのインストーラーはAzure AD環境からダウンロードします。

Azure ADのテナントにログインして「Azure AD Connect」を選択、「Azure ADクラウド同期を管理する」をクリックします。

遷移後の画面で「エージェントのダウンロード」を選び、「使用条件に同意してダウンロードする」をクリックしてインストーラーをダウンロードします。

インストーラーはAADConnectProvisioningAgentSetup.exeというファイル名で、本日時点でVer.1.1.587でした。
このインストーラーを新規作成したEC2にコピーし実行します。

利用条件に同意し「Install」をクリックするだけでOKです。

インストーラー後初期設定ウィザードが開始されます。

「Next」をクリックするとAzure ADグローバル管理者でのサインインを求められるのでサインインします。

次に使用するgMSAを選ぶので前節で作成したAADCloudSyncを選択。

続けて接続するActive Directoryドメインの選択になるので、shibata.localを選び「Add Directory」をクリック、

ここでAWS Managed Microsoft ADの管理者ユーザーであるAdminを選び「OK」をクリックしました。
(ドメインコントローラーの優先順位はデフォルトのままです)

ここで残念ながら

Provided credentials are not in Domain Admin or Enterprise Admin group.

のメッセージが表示され先に進めなくなってしまいました。

残念ながら普通に無理でした...

(失敗) CLIインストールも試してみた

ウィザードからのインストールが失敗するならCLIでどうにかできないかと思い、こちらも試してみました。

CLIでのインストール方法は以下のドキュメントに記載されています。

ざっくり以下の手順を実施したのですが、やっぱりこちらでも権限不足のエラーとなってしまいました。

# PowerShellモジュールのロード
Import-Module "C:\Program Files\Microsoft Azure AD Connect Provisioning Agent\Microsoft.CloudSync.PowerShell.dll"

# Azure AD グローバル管理者で接続
$globalAdminPassword = ConvertTo-SecureString -String "<Azure ADグローバル管理者のパスワード>" -AsPlainText -Force 
$globalAdminCreds = New-Object System.Management.Automation.PSCredential -ArgumentList ("<Azure ADグローバル管理者のUPN>", $globalAdminPassword) 
Connect-AADCloudSyncAzureAD -Credential $globalAdminCreds

# ここではgMSAを新規作成するパターンを例示 : この場合 provAgentgMSA という名前のアカウントが作成される
$domainAdminPassword = ConvertTo-SecureString -String "<Adminユーザーのパスワード>" -AsPlainText -Force
$domainAdminCreds = New-Object System.Management.Automation.PSCredential -ArgumentList ("corp\admin", $domainAdminPassword) 
Add-AADCloudSyncGMSA -Credential $domainAdminCreds

# Acitive Directoryに接続 : ここでエラー
Add-AADCloudSyncADDomain -DomainName "shibata.local" -Credential $domainAdminCreds

Add-AADCloudSyncADDomain : Error while configuring permissions on gmsa. Error: 制限の違反が発生しました。

既存gMSAを使うパターン、gMSAを新規作成するパターン両方試したのですが、どちらもgMSAに所定の権限を付与する際のアクセス権エラーとなりました。

ちなみに個別に権限付与するコマンドを実行してもダメでした...

Import-Module "C:\Program Files\Microsoft Azure AD Connect Provisioning Agent\Microsoft.CloudSync.PowerShell.dll"

# gMSAの権限設定 : BasicRead以外の権限も同様の結果に
$domainAdminPassword = ConvertTo-SecureString -String "<Adminユーザーのパスワード>" -AsPlainText -Force
$domainAdminCreds = New-Object System.Management.Automation.PSCredential -ArgumentList ("corp\admin", $domainAdminPassword) 
Set-AADCloudSyncPermissions -PermissionType 'BasicRead' -TargetDomain 'shibata.local' -TargetDomainCredential $domainAdminCreds

Set-AADCloudSyncPermissions : Provided credentials cannot be validated. Please provide Enterprise/Domain Administrator credentials.

終わりに

以上となります。
予想はしてましたがやっぱり駄目でした。

今はどうしようもありませんが将来的にAzure AD Connect Cloud SyncおよびAWS Managed Microsoft ADの仕様が変わり上手いことできる様になる可能性もゼロではありません。
仕様が変わるのを待つかEC2でActive Directory環境を用意するかを選ぶと良いでしょう。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.